昨天講到了 values.yaml
及 _helpers.tpl
是定義變數的地方,那麼什麼地方會使用到這些變數呢?看起來就剩下定義 K8S 資源的那些 YAML 檔了。沒錯,之前我們定義的所有變數,全部都是用在這些 YAML 中。
那麼我們應該如何在這些 YAML 中帶入昨天定義的這些變數呢?我們先上個簡單的範例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "mychart.selectorLabels" . | nindent 6 }}
templates:
metadata:
labels:
{{- include "mychart.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
以上就是一個簡單的 Helm 中 templates 資料夾內的 K8S YAML 範例。
簡單來說,YAML 中要使用變數的位置就使用 {{}}
(雙大括號) 括起來,括號中就可以填入變數, Helm 會自動替換掉這些位置,要引入變數前要先確定變數是定義在哪個位置,在 Chart.yaml
跟 values.yaml
這兩個位置定義的變數,就分別透過 .Chart
及 .Values
引入,後接變數名稱即可。若在 _helpers.tpl
裡面的變數,則是透過 include 的方式,在接變數名稱。
透過這樣的方式,我們就可以將相同名稱的東西使用變數放在同一位置,在分別引入即可,再也不怕漏改某個地方了。
今天就介紹到這邊,明天我們接著介紹。